package com.tianyu.inspection.service.api;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tianyu.inspection.entity.model.OperateMo;
import com.tianyu.inspection.entity.model.QueryMo;

/**********************************
 * @Author YSW
 * @Description Service顶层接口
 * @Date 2021/1/6 - 15:16
 **********************************/

public interface IBaseService<T> {

    /**
     * 分页查询
     * @param queryMo 参数模型
     * @return 分页记录对象
     */
    default IPage<T> searchListPage(QueryMo queryMo){
        return new Page<>(1,10);
    }

    /**
     * 通过ID等参数查询一条数据
     * @param queryMo 参数集[实体ID 与 项目ID, 数据状态等]
     * @return 单条记录结果
     */
    default T selectOne(QueryMo queryMo){
        return null;
    }

    /**
     * 插入一条数据
     * @param operateMo 实体对象
     * @return 是否操作成功
     */
    default boolean insert(OperateMo operateMo){
        return false;
    }

    /**
     * 通过ID删除一条数据
     * @param queryMo 参数集[实体ID 与 项目ID, 数据状态等]
     * @return 是否操作成功
     */
    default boolean delete(QueryMo queryMo){
        return false;
    }

    /**
     * 通过ID更新一条数据
     * @param operateMo 实体对象参数集
     * @return 是否操作成功
     */
    default boolean update(OperateMo operateMo){
        return false;
    }

    /**
     * 通过ID逻辑删除一条数据
     * @param queryMo 参数集[实体ID 与 项目ID, 数据状态等]
     * @return 是否操作成功
     */
    default boolean logicallyDelete(QueryMo queryMo){
        return false;
    }
}
